package com.rose.redis._stand_alone_cache;


import cn.hutool.cache.Cache;
import cn.hutool.cache.impl.LRUCache;

/**
 * <p>
 * LRU算法实现：最近最少使用算法，判断条件：以数据的时间判断，删除离当前时间最久时间的数据。
 * </p>
 *
 * @author: zhu.chen
 * @date: 2021/1/13
 * @version: v1.0.0
 */
public class LruCacheTest {

    public static void main(String[] args) {
        Cache<String, String> cache = new LRUCache<>(3);
        cache.put("a", "1");
        cache.put("b", "2");
        cache.put("c", "3");
        cache.put("d", "4");
        System.out.println(cache.get("b"));
        /**
         * {c=CacheObj [key=c, obj=3, lastAccess=1610552573187, accessCount=0, ttl=0],
         * d=CacheObj [key=d, obj=4, lastAccess=1610552573188, accessCount=0, ttl=0], b=CacheObj
         * [key=b, obj=2, lastAccess=1610552573188, accessCount=1, ttl=0]}
         *
         * 底层是基于LinkedHashMap，大小为3，则put()时LRU会删除key=a的数据。
         */
        System.out.println(cache.toString());
    }

}
